export function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
export async function loopFun(task, condition = () => true, time = 1000) {
  let flag = true;
  while (condition() && flag) {
    console.log(condition(), flag, condition() && flag);
    await task();
    await sleep(time);
  }
}

export function toUniforms(data) {
  for (const key in data) {
    data[key] = { value: data[key] };
  }
  return data;
}

export function bindMyClick(elementId, callback) {
  const element = document.querySelector(elementId);
  // 监听mousedown事件
  element.addEventListener('mousedown', () => {
    // 创建一个新的自定义事件，并附带一些数据
    const myClickEvent = new CustomEvent('myclick', {
      detail: { message: 'Hello, myclick!' }, // 附带数据
      bubbles: true, // 是否冒泡
      cancelable: true // 是否可取消
    });
    // 触发自定义事件
    element.dispatchEvent(myClickEvent);
  });
  // 监听自定义的myclick事件，并获取传递的数据
  element.addEventListener('myclick', callback);
}

export function listToTree(arr) {
  let resArr: any[] = [];
  arr.forEach(v => {
    let parentNode = arr.find(item => item.id == v.pid);
    if (parentNode) {
      // 如果没有找到父亲-说明 他是一级目录
      if (parentNode['children']) {
        parentNode['children'].push(v);
      } else {
        parentNode['children'] = [v];
      }
    } else {
      resArr.push(v);
    }
  });
  return resArr;
}
